#include <bits/stdc++.h>
using namespace std;
#define int long long
struct node 
{
    int x,i;
};
bool cmp(node x, node y)
{
    return x.x<y.x;
}
void solve()
{
    int n;
    cin>>n;
    vector<node>v(n+1);
    bool f=0;
    unordered_map<int, int>m,w;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i].x;
        v[i].i=i;
        if(v[i].x&&++m[v[i].x]==2)f=1;
    }
    int mx=0;
    sort(v.begin()+1,v.end(),cmp);
    // auto it=unique(v.begin()+1,v.end());
    // v.erase(it,v.end());
    //n=v.size()-1;
    vector<int> ans;
    bool flag=0;
    if(n==1)
    {
        if(v[1].x>1)cout<<-1<<endl;
        else if(!v[1].x)cout<<0<<endl;
        else  
        {
            cout<<1<<endl<<v[1].i<<endl;
        }
        return ;
    }
    else 
    {
        if(f||v[n].x>n)
        {
            cout<<-1<<endl;
            return ;
        }
        else  
        {
            for(int i=1;i<=n;i++)
            {
                if(!flag&&v[i].x-1>0&&!w[v[i].x-1])
                {
                    ans.push_back(v[n].i);
                    flag=1;
                }
                if(v[i].x>0&&!w[v[i].x])ans.push_back(v[i].i);
                w[v[i].x]=1;
            }
        }
    }
    if(ans.size()<v[n].x)
    {
        cout<<-1<<endl;
    }
    else  
    {
        cout<<ans.size()<<endl;
        for(auto x:ans)cout<<x<<" ";
        cout<<endl;
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}